package com.kaochong.xcx.util.db.split;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 使用ThreadLocal技术来记录当前线程中的数据源的key
 * @author han
 * @date 2018-08-05 0:21
 */
public class DynamicDataSourceHolder {
	
	private static Logger logger = LoggerFactory.getLogger(DynamicDataSourceHolder.class);
	
	/**
	 * 使用ThreadLocal记录当前线程的数据源key
	 */
	private static ThreadLocal<String> holder = new ThreadLocal<String>();
	
	/**
	 * 写库对应的数据源key
	 */
	public static final String MASTER = "master";
	
	/**
	 * 读库对应的数据源key
	 */
	public static final String SLAVE = "slave";
	
	/**
	 * 设置数据源key
	 * @param key
	 */
	public static void setDbType(String key){
		logger.debug("所使用的数据源为:" + key);
		holder.set(key);
	}
	
	/**
	 * 获取数据源key
	 * @return
	 */
	public static String getDbType(){
		String db = holder.get();
		if (null == db) {
			db = MASTER;
		}
		return db;
	}
	
	/**
	 * 清理链接类型
	 */
	private static void clearDbType(){
		holder.remove();
	}
	
	/**
	 * 判断是否为主数据库
	 */
	public static boolean isMaster() {
		return MASTER.equals(getDbType());
	}
}
